package com.rfsp.common.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class DecimalFormatUtil {

	private static DecimalFormat decimalFormat = null;
	private static DecimalFormat decimalFormat1 = null;
	private static DecimalFormat decimalFormat2 =null;

	public static String DecimalFormat2ThreeNumOneComma(BigDecimal bigDecimal) {
		
		String formatstr = "";
		try {
			DecimalFormat format = checkIfNum(bigDecimal);
			format.setRoundingMode(RoundingMode.HALF_UP);//设置四舍五入
			formatstr = format.format(bigDecimal);
		} catch (Exception e) {
			//e.printStackTrace();
		}

		return formatstr;

	}

	public static String DecimalFormatThreeNumOneComma(BigDecimal bigDecimal, Integer length) {

		String formatstr = "";
		try {
			DecimalFormat format = checkIfNum(bigDecimal, length);
			formatstr = format.format(bigDecimal);
		} catch (Exception e) {
			//e.printStackTrace();
		}

		return formatstr;

	}

	
	
	public static String DecimalFormat2ThreeNumOneComma(String bigDecimal) {
		
		String formatstr = "";
		
		try {
			BigDecimal  tagDecimal=new BigDecimal(bigDecimal);
			DecimalFormat format = checkIfNum(tagDecimal);
			formatstr = format.format(tagDecimal);
		} catch (Exception e) {
			//e.printStackTrace();
		}

		return formatstr;

	}
	public static String DecimalFormatThreeNumOneComma(String bigDecimal, Integer length) {

		String formatstr = "";

		try {
			BigDecimal  tagDecimal=new BigDecimal(bigDecimal);
			DecimalFormat format = checkIfNum(tagDecimal, length);
			formatstr = format.format(tagDecimal);
		} catch (Exception e) {
			//e.printStackTrace();
		}

		return formatstr;

	}

	
	public static String DecimalFormat2ThreeNumOneComma8(String bigDecimal) {
		
		String formatstr = "";
		
		try {
			BigDecimal  tagDecimal=new BigDecimal(bigDecimal);
			DecimalFormat format = getDecimalFormat2(tagDecimal);
			formatstr = format.format(tagDecimal);
		} catch (Exception e) {
			//e.printStackTrace();
		}

		return formatstr;

	}
	
	

	private static DecimalFormat checkIfNum(BigDecimal bigDecimal, Integer length) {

		String decimal = "";
		if(null != length && length > 0){
			for (int i = 0; i < length; i++) {
				decimal += "0";
			}
			decimal = "." + decimal;
		}
		decimalFormat = new DecimalFormat("###,###,###,##0" + decimal);
		return decimalFormat;

	}
	private static DecimalFormat checkIfNum(BigDecimal bigDecimal) {

		if (decimalFormat == null) {
			decimalFormat = new DecimalFormat("###,###,###,##0.00");
		}
		if (decimalFormat1 == null) {
			decimalFormat1 = new DecimalFormat("###,###,###,##0");
		}
		if (bigDecimal.compareTo(new BigDecimal(bigDecimal.longValue())) == 0) {
			return decimalFormat1;
		} else {
			return decimalFormat;
		}

	}
	private static DecimalFormat getDecimalFormat2(BigDecimal bigDecimal) {
		if (decimalFormat2 == null) {
			decimalFormat2 = new DecimalFormat("###,###,###,##0.00######");
		}
		
		if (decimalFormat1 == null) {
			decimalFormat1 = new DecimalFormat("###,###,###,##0");
		}
		if (bigDecimal.compareTo(new BigDecimal(bigDecimal.longValue())) == 0) {
			return decimalFormat1;
			
		} else {
			return decimalFormat2;
		}
	}
	
}
